// 上面这个代码处理过度动画（默认加上不用管）
document.addEventListener('DOMContentLoaded', () => {
  setTimeout(() => {
    document.body.classList.add('sidenav-pinned')
    document.body.classList.add('ready')
  }, 200)
})



// 每个页面都会导入该js 统一的设置写这里即可













// bootstrap轻提示
const toastDom = document.querySelector('#myToast')
const toast = new bootstrap.Toast(toastDom, {
  delay: 2000
})
// 抽取提示函数,要什么提示自己写
function tip(msg) {
  document.querySelector('.toast-body').innerHTML = msg
  toast.show()
}

axios.defaults.baseURL = 'http://ajax-api.itheima.net'



/* 获得设置用户名 */
/* 不是所有页面都有这个ID所以判断是否存在,存在再设置,防止获取不到ID报错 */
const usernameSpan = document.querySelector('#username')
// if (usernameSpan) {
//   usernameSpan.innerHTML = localStorage.getItem('username')
// }
/* 防止报错,有的页面没有usernameSpan */
usernameSpan && (usernameSpan.innerHTML = localStorage.getItem('username'))//这个式子右边是真,左边不确定,当左边为假时退出判断,左边为真时去右边解析括号里面的式子



/* 登出的逻辑 */ //如果没有表达式为假,不执行后面的逻辑
const logoutDom = document.querySelector('#logout')
logoutDom && (logoutDom.onclick = function () {
  localStorage.removeItem('user-token')
  localStorage.removeItem('username')
  location.assign('./login.html')
})



// 添加请求拦截器(这样导了这个js文件的都可以不用手写请求头携带token,导了就会拦截然后设置请求头携带token再请求
axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // 请求响应之前设置config.headers.Authorization = token 注意是:config里面的headers 设置请求头携带token

  const token = localStorage.getItem('user-token') //这就是纠结了很久的答案,每一个请求都有这个请求头,
  // 登录界面没有获取token导致请求失败,请求失败直接读失败信息,但是请求没有完成读不到信息

  config.headers.Authorization = token
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});





// 添加响应拦截器
axios.interceptors.response.use(function (response) {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  //这个其实就是服务器响应结果,这里return出去了所以会跑到下面的结果,因为没有改所以会一模一样

  return response.data //筛选结果,这里就是所有请求返回结果的源头,这里改了其他页面都要删几个Data

}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  console.dir(error);
  if (error.response.status === 401) { //如果有错误的token就删掉保存的重新回到登陆页面
    localStorage.removeItem('user-token')
    localStorage.removeItem('username')
    location.assign('./login.html')
  }
  return Promise.reject(error);
});

/* 请求拦截器:请求的时候触发请求拦截器,然后执行请求拦截器的逻辑,上面就拦截了请求并且设置了请求头携带token然后再给你请求 */
/* 响应拦截器:服务器响应的时候触发响应拦截器,然后执行响应拦截器里面的逻辑,目前没有具体业务 */











